// pages/center/center.js
import toast from "../../utils/toast"
import { bindOpenid, logout } from "../../service/auth"
import checkLogin from "../../utils/checkLogin"
import { updateUserInfoCache } from "../../utils/doLogin"
import {updateAvatar} from "../../service/user";
Page({

  /**
   * 页面的初始数据
   */
  data: {
    userInfo:{}
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
      //验证是否登录
      checkLogin()
      // this.setData({
      //   userInfo:wx.getStorageSync('userInfo')
      // })
  },
  onShow(){
    this.setData({
      userInfo:wx.getStorageSync('userInfo')
    })
  },

/**
 * 退出登录
 */
  logout(){
    //1.请求API，执行退出
    logout().then(()=>{
      //2.清除缓存
      wx.removeStorageSync('access_token')
      wx.removeStorageSync('userInfo')
      //3.显示提醒，并跳转
      toast.success('退出成功',()=>{
        this.setData({
          userInfo:{}
        })
        //跳转到首页
        wx.reLaunch({
          url:'/pages/index/index'
        })
      })
    })
  },

  /**
   * 绑定或者解绑
   */
  bindOrUnbind(){
    //1.判断是解绑还是绑定
    const {openid} = this.data.userInfo
    let type = "bind"
    if(openid) type = "unbind"
    const msg = type =="bind" ? '绑定' :'解绑'

    wx.showModal({
      title:'提示',
      content:`您确定要${msg}微信吗`,
      success:(res)=> {
        if(res.confirm){
          this.doBindOrUnbind(type,msg)
        }
      }
    })
  },

  /**
   * 执行绑定或者解绑
   * @param type
   * @param msg
   */
  doBindOrUnbind(type,msg){
    //2.发送请求，执行绑定或者解绑
    const data = {
      type,
      openid:wx.getStorageSync('openid')
      /**
       * 这里传递的openid,要从缓存中获取openid,因为这样可以限制，只能解绑自己的微信
       * 如果使用了userInfo的openid，绑定的时候，没有openid；解绑的时候，可能会出现登录的别人的账号
       * 把别人的账号给解绑了
       */
    }
    bindOpenid(data).then(()=>{
      //4.重新请求用户信息，更新缓存
      updateUserInfoCache(res=>{
        this.setData({
          userInfo:res
        })
        //3.提示用户绑定成功
        toast.success(msg + "成功")
      })
    })
  },

  getFileKey(e){
    const fileKey = e.detail
    //1.请求API，更新用户头像
    updateAvatar({avatar:fileKey}).then(()=>{
      //2.更新缓存
      //绑定完成之后，更新缓存中的用户信息
      updateUserInfoCache(res=>{
        this.setData({
          userInfo: res
        })
        toast.success('更换成功')
      })
    })
  }
})